home *** CD-ROM | disk | FTP | other *** search
/ F1 Licenseware / F1 Licenseware - Volume 1.iso / disks / 089a.dms / 089a.adf / EXAMPLE_PROGRAMS / example28.AMOS / example28.amosSourceCode
AMOS Source Code  |  1992-03-06  |  2KB  |  96 lines

  1. '==================  
  2. 'EXAMPLE PROGRAM 28  
  3. '==================
  4. 'A pic ripper  
  5. '
  6.  
  7.  
  8. 'This sets aside a large area of memory to load a program into 
  9. '--------------------------------------------------------------
  10. Set Buffer 250
  11.  
  12.  
  13. Flash Off : Curs Off : Paper 0 : Cls 0
  14.  
  15.  
  16. 'This is the main loop 
  17. '--------------------- 
  18. Do 
  19. Gosub _LOADPIC
  20. If ADR>0
  21. Gosub _HEADER
  22. End If 
  23. If ADR<>0
  24. ADR=0 : Gosub _SEARCHPICS
  25. End If 
  26. Loop 
  27.  
  28. 'The rest are all subroutines called  from the main loop 
  29.  
  30. 'BLoad the file in using the file selecter 
  31. '----------------------------------------- 
  32. _LOADPIC:
  33. F$=Fsel$("*.*","","LOAD EXE")
  34. If Length(10)>0 Then Erase 10
  35. Open In 1,F$ : BL=Lof(1)
  36. Reserve As Data 10,BL
  37. Close 1
  38. Bload F$,10
  39. COUNT=Start(10)
  40.  
  41.  
  42. 'This is where we do all the searching 
  43. '------------------------------------- 
  44. _SEARCHPICS:
  45. SEARCH$="Pac"
  46. ADR=Hunt(COUNT To Start(10)+Length(10),SEARCH$)
  47. If ADR=0 Then Print "ALL DONE! NO (MORE) PICS FOUND" : Wait 120 : Return 
  48. If Peek(ADR+4)=80 and Peek(ADR+5)=105 and Peek(ADR+6)=99
  49. B$="PIC.PAC HEADER FOUND AT"+Str$(ADR)
  50. Print ,B$
  51. COUNT=ADR+100
  52. End If 
  53. Return 
  54.  
  55. 'Restore the picture to be a true Amos ABK pic 
  56. '--------------------------------------------- 
  57. _HEADER:
  58. '
  59. 'poke AmBk at new start of bank  
  60. Poke ADR-12,65
  61. Poke ADR-11,109
  62. Poke ADR-10,66
  63. Poke ADR-9,107
  64. '
  65. 'restore some data  discarded by compiler
  66. Poke ADR-8,0
  67. Poke ADR-7,$A
  68. Poke ADR-6,0
  69. Poke ADR-5,0
  70. Poke ADR-4,$80
  71. Poke ADR-3,0
  72. Poke ADR-2,$1C
  73. Poke ADR-1,$32
  74. 'Guess length for now
  75. Bsave "ram:pic.abk",ADR-12 To ADR+72000
  76. Gosub _VIEWPIC
  77. Gosub _SAVEPIC
  78. Return 
  79.  
  80.  
  81. 'Display picture if any found
  82. '----------------------------- 
  83. _VIEWPIC:
  84. Load "ram:pic.abk",11
  85. Unpack 11 To 0
  86. Wait 25
  87. While Mouse Key=0 : Wend 
  88. Return 
  89.  
  90.  
  91. 'Let user save if
  92. '----------------- 
  93. _SAVEPIC:
  94. F$=Fsel$("*.*","","SAVE IFF")
  95. Save Iff F$,0
  96. Return